# Generated from GdmlExpression.g4 by ANTLR 4.13.1
from antlr4 import *
from io import StringIO
import sys

from typing import TextIO


def serializedATN():
    return [
        4,
        0,
        34,
        247,
        6,
        -1,
        2,
        0,
        7,
        0,
        2,
        1,
        7,
        1,
        2,
        2,
        7,
        2,
        2,
        3,
        7,
        3,
        2,
        4,
        7,
        4,
        2,
        5,
        7,
        5,
        2,
        6,
        7,
        6,
        2,
        7,
        7,
        7,
        2,
        8,
        7,
        8,
        2,
        9,
        7,
        9,
        2,
        10,
        7,
        10,
        2,
        11,
        7,
        11,
        2,
        12,
        7,
        12,
        2,
        13,
        7,
        13,
        2,
        14,
        7,
        14,
        2,
        15,
        7,
        15,
        2,
        16,
        7,
        16,
        2,
        17,
        7,
        17,
        2,
        18,
        7,
        18,
        2,
        19,
        7,
        19,
        2,
        20,
        7,
        20,
        2,
        21,
        7,
        21,
        2,
        22,
        7,
        22,
        2,
        23,
        7,
        23,
        2,
        24,
        7,
        24,
        2,
        25,
        7,
        25,
        2,
        26,
        7,
        26,
        2,
        27,
        7,
        27,
        2,
        28,
        7,
        28,
        2,
        29,
        7,
        29,
        2,
        30,
        7,
        30,
        2,
        31,
        7,
        31,
        2,
        32,
        7,
        32,
        2,
        33,
        7,
        33,
        2,
        34,
        7,
        34,
        2,
        35,
        7,
        35,
        2,
        36,
        7,
        36,
        2,
        37,
        7,
        37,
        2,
        38,
        7,
        38,
        2,
        39,
        7,
        39,
        1,
        0,
        1,
        0,
        1,
        0,
        1,
        0,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        2,
        1,
        2,
        1,
        2,
        1,
        2,
        1,
        3,
        1,
        3,
        1,
        3,
        1,
        3,
        1,
        3,
        1,
        4,
        1,
        4,
        1,
        4,
        1,
        4,
        1,
        4,
        1,
        5,
        1,
        5,
        1,
        5,
        1,
        5,
        1,
        5,
        1,
        6,
        1,
        6,
        1,
        6,
        1,
        6,
        1,
        7,
        1,
        7,
        1,
        7,
        1,
        7,
        1,
        7,
        1,
        7,
        1,
        8,
        1,
        8,
        1,
        8,
        1,
        8,
        1,
        8,
        1,
        9,
        1,
        9,
        1,
        9,
        1,
        9,
        1,
        10,
        1,
        10,
        1,
        10,
        1,
        10,
        1,
        11,
        1,
        11,
        1,
        11,
        1,
        11,
        1,
        12,
        1,
        12,
        1,
        13,
        1,
        13,
        1,
        14,
        1,
        14,
        1,
        15,
        1,
        15,
        1,
        16,
        1,
        16,
        1,
        17,
        1,
        17,
        1,
        18,
        1,
        18,
        1,
        19,
        1,
        19,
        1,
        20,
        1,
        20,
        1,
        21,
        1,
        21,
        1,
        22,
        1,
        22,
        1,
        23,
        1,
        23,
        1,
        24,
        1,
        24,
        1,
        25,
        1,
        25,
        1,
        26,
        1,
        26,
        1,
        26,
        1,
        27,
        1,
        27,
        1,
        28,
        1,
        28,
        1,
        29,
        1,
        29,
        1,
        29,
        1,
        29,
        1,
        30,
        1,
        30,
        1,
        30,
        1,
        30,
        1,
        31,
        1,
        31,
        5,
        31,
        181,
        8,
        31,
        10,
        31,
        12,
        31,
        184,
        9,
        31,
        1,
        32,
        3,
        32,
        187,
        8,
        32,
        1,
        33,
        1,
        33,
        3,
        33,
        191,
        8,
        33,
        1,
        34,
        1,
        34,
        1,
        34,
        3,
        34,
        196,
        8,
        34,
        1,
        34,
        3,
        34,
        199,
        8,
        34,
        1,
        34,
        1,
        34,
        3,
        34,
        203,
        8,
        34,
        1,
        35,
        1,
        35,
        4,
        35,
        207,
        8,
        35,
        11,
        35,
        12,
        35,
        208,
        1,
        35,
        4,
        35,
        212,
        8,
        35,
        11,
        35,
        12,
        35,
        213,
        1,
        35,
        1,
        35,
        4,
        35,
        218,
        8,
        35,
        11,
        35,
        12,
        35,
        219,
        1,
        35,
        1,
        35,
        4,
        35,
        224,
        8,
        35,
        11,
        35,
        12,
        35,
        225,
        1,
        35,
        4,
        35,
        229,
        8,
        35,
        11,
        35,
        12,
        35,
        230,
        3,
        35,
        233,
        8,
        35,
        1,
        36,
        1,
        36,
        1,
        37,
        1,
        37,
        1,
        38,
        1,
        38,
        1,
        39,
        4,
        39,
        242,
        8,
        39,
        11,
        39,
        12,
        39,
        243,
        1,
        39,
        1,
        39,
        0,
        0,
        40,
        1,
        1,
        3,
        2,
        5,
        3,
        7,
        4,
        9,
        5,
        11,
        6,
        13,
        7,
        15,
        8,
        17,
        9,
        19,
        10,
        21,
        11,
        23,
        12,
        25,
        13,
        27,
        14,
        29,
        15,
        31,
        16,
        33,
        17,
        35,
        18,
        37,
        19,
        39,
        20,
        41,
        21,
        43,
        22,
        45,
        23,
        47,
        24,
        49,
        25,
        51,
        26,
        53,
        27,
        55,
        28,
        57,
        29,
        59,
        30,
        61,
        31,
        63,
        32,
        65,
        0,
        67,
        0,
        69,
        33,
        71,
        0,
        73,
        0,
        75,
        0,
        77,
        0,
        79,
        34,
        1,
        0,
        3,
        3,
        0,
        65,
        90,
        95,
        95,
        97,
        122,
        2,
        0,
        43,
        43,
        45,
        45,
        3,
        0,
        9,
        10,
        13,
        13,
        32,
        32,
        254,
        0,
        1,
        1,
        0,
        0,
        0,
        0,
        3,
        1,
        0,
        0,
        0,
        0,
        5,
        1,
        0,
        0,
        0,
        0,
        7,
        1,
        0,
        0,
        0,
        0,
        9,
        1,
        0,
        0,
        0,
        0,
        11,
        1,
        0,
        0,
        0,
        0,
        13,
        1,
        0,
        0,
        0,
        0,
        15,
        1,
        0,
        0,
        0,
        0,
        17,
        1,
        0,
        0,
        0,
        0,
        19,
        1,
        0,
        0,
        0,
        0,
        21,
        1,
        0,
        0,
        0,
        0,
        23,
        1,
        0,
        0,
        0,
        0,
        25,
        1,
        0,
        0,
        0,
        0,
        27,
        1,
        0,
        0,
        0,
        0,
        29,
        1,
        0,
        0,
        0,
        0,
        31,
        1,
        0,
        0,
        0,
        0,
        33,
        1,
        0,
        0,
        0,
        0,
        35,
        1,
        0,
        0,
        0,
        0,
        37,
        1,
        0,
        0,
        0,
        0,
        39,
        1,
        0,
        0,
        0,
        0,
        41,
        1,
        0,
        0,
        0,
        0,
        43,
        1,
        0,
        0,
        0,
        0,
        45,
        1,
        0,
        0,
        0,
        0,
        47,
        1,
        0,
        0,
        0,
        0,
        49,
        1,
        0,
        0,
        0,
        0,
        51,
        1,
        0,
        0,
        0,
        0,
        53,
        1,
        0,
        0,
        0,
        0,
        55,
        1,
        0,
        0,
        0,
        0,
        57,
        1,
        0,
        0,
        0,
        0,
        59,
        1,
        0,
        0,
        0,
        0,
        61,
        1,
        0,
        0,
        0,
        0,
        63,
        1,
        0,
        0,
        0,
        0,
        69,
        1,
        0,
        0,
        0,
        0,
        79,
        1,
        0,
        0,
        0,
        1,
        81,
        1,
        0,
        0,
        0,
        3,
        85,
        1,
        0,
        0,
        0,
        5,
        89,
        1,
        0,
        0,
        0,
        7,
        93,
        1,
        0,
        0,
        0,
        9,
        98,
        1,
        0,
        0,
        0,
        11,
        103,
        1,
        0,
        0,
        0,
        13,
        108,
        1,
        0,
        0,
        0,
        15,
        112,
        1,
        0,
        0,
        0,
        17,
        118,
        1,
        0,
        0,
        0,
        19,
        123,
        1,
        0,
        0,
        0,
        21,
        127,
        1,
        0,
        0,
        0,
        23,
        131,
        1,
        0,
        0,
        0,
        25,
        135,
        1,
        0,
        0,
        0,
        27,
        137,
        1,
        0,
        0,
        0,
        29,
        139,
        1,
        0,
        0,
        0,
        31,
        141,
        1,
        0,
        0,
        0,
        33,
        143,
        1,
        0,
        0,
        0,
        35,
        145,
        1,
        0,
        0,
        0,
        37,
        147,
        1,
        0,
        0,
        0,
        39,
        149,
        1,
        0,
        0,
        0,
        41,
        151,
        1,
        0,
        0,
        0,
        43,
        153,
        1,
        0,
        0,
        0,
        45,
        155,
        1,
        0,
        0,
        0,
        47,
        157,
        1,
        0,
        0,
        0,
        49,
        159,
        1,
        0,
        0,
        0,
        51,
        161,
        1,
        0,
        0,
        0,
        53,
        163,
        1,
        0,
        0,
        0,
        55,
        166,
        1,
        0,
        0,
        0,
        57,
        168,
        1,
        0,
        0,
        0,
        59,
        170,
        1,
        0,
        0,
        0,
        61,
        174,
        1,
        0,
        0,
        0,
        63,
        178,
        1,
        0,
        0,
        0,
        65,
        186,
        1,
        0,
        0,
        0,
        67,
        190,
        1,
        0,
        0,
        0,
        69,
        192,
        1,
        0,
        0,
        0,
        71,
        232,
        1,
        0,
        0,
        0,
        73,
        234,
        1,
        0,
        0,
        0,
        75,
        236,
        1,
        0,
        0,
        0,
        77,
        238,
        1,
        0,
        0,
        0,
        79,
        241,
        1,
        0,
        0,
        0,
        81,
        82,
        5,
        99,
        0,
        0,
        82,
        83,
        5,
        111,
        0,
        0,
        83,
        84,
        5,
        115,
        0,
        0,
        84,
        2,
        1,
        0,
        0,
        0,
        85,
        86,
        5,
        115,
        0,
        0,
        86,
        87,
        5,
        105,
        0,
        0,
        87,
        88,
        5,
        110,
        0,
        0,
        88,
        4,
        1,
        0,
        0,
        0,
        89,
        90,
        5,
        116,
        0,
        0,
        90,
        91,
        5,
        97,
        0,
        0,
        91,
        92,
        5,
        110,
        0,
        0,
        92,
        6,
        1,
        0,
        0,
        0,
        93,
        94,
        5,
        97,
        0,
        0,
        94,
        95,
        5,
        99,
        0,
        0,
        95,
        96,
        5,
        111,
        0,
        0,
        96,
        97,
        5,
        115,
        0,
        0,
        97,
        8,
        1,
        0,
        0,
        0,
        98,
        99,
        5,
        97,
        0,
        0,
        99,
        100,
        5,
        115,
        0,
        0,
        100,
        101,
        5,
        105,
        0,
        0,
        101,
        102,
        5,
        110,
        0,
        0,
        102,
        10,
        1,
        0,
        0,
        0,
        103,
        104,
        5,
        97,
        0,
        0,
        104,
        105,
        5,
        116,
        0,
        0,
        105,
        106,
        5,
        97,
        0,
        0,
        106,
        107,
        5,
        110,
        0,
        0,
        107,
        12,
        1,
        0,
        0,
        0,
        108,
        109,
        5,
        108,
        0,
        0,
        109,
        110,
        5,
        111,
        0,
        0,
        110,
        111,
        5,
        103,
        0,
        0,
        111,
        14,
        1,
        0,
        0,
        0,
        112,
        113,
        5,
        108,
        0,
        0,
        113,
        114,
        5,
        111,
        0,
        0,
        114,
        115,
        5,
        103,
        0,
        0,
        115,
        116,
        5,
        49,
        0,
        0,
        116,
        117,
        5,
        48,
        0,
        0,
        117,
        16,
        1,
        0,
        0,
        0,
        118,
        119,
        5,
        115,
        0,
        0,
        119,
        120,
        5,
        113,
        0,
        0,
        120,
        121,
        5,
        114,
        0,
        0,
        121,
        122,
        5,
        116,
        0,
        0,
        122,
        18,
        1,
        0,
        0,
        0,
        123,
        124,
        5,
        101,
        0,
        0,
        124,
        125,
        5,
        120,
        0,
        0,
        125,
        126,
        5,
        112,
        0,
        0,
        126,
        20,
        1,
        0,
        0,
        0,
        127,
        128,
        5,
        112,
        0,
        0,
        128,
        129,
        5,
        111,
        0,
        0,
        129,
        130,
        5,
        119,
        0,
        0,
        130,
        22,
        1,
        0,
        0,
        0,
        131,
        132,
        5,
        97,
        0,
        0,
        132,
        133,
        5,
        98,
        0,
        0,
        133,
        134,
        5,
        115,
        0,
        0,
        134,
        24,
        1,
        0,
        0,
        0,
        135,
        136,
        5,
        40,
        0,
        0,
        136,
        26,
        1,
        0,
        0,
        0,
        137,
        138,
        5,
        41,
        0,
        0,
        138,
        28,
        1,
        0,
        0,
        0,
        139,
        140,
        5,
        91,
        0,
        0,
        140,
        30,
        1,
        0,
        0,
        0,
        141,
        142,
        5,
        93,
        0,
        0,
        142,
        32,
        1,
        0,
        0,
        0,
        143,
        144,
        5,
        43,
        0,
        0,
        144,
        34,
        1,
        0,
        0,
        0,
        145,
        146,
        5,
        45,
        0,
        0,
        146,
        36,
        1,
        0,
        0,
        0,
        147,
        148,
        5,
        42,
        0,
        0,
        148,
        38,
        1,
        0,
        0,
        0,
        149,
        150,
        5,
        47,
        0,
        0,
        150,
        40,
        1,
        0,
        0,
        0,
        151,
        152,
        5,
        62,
        0,
        0,
        152,
        42,
        1,
        0,
        0,
        0,
        153,
        154,
        5,
        60,
        0,
        0,
        154,
        44,
        1,
        0,
        0,
        0,
        155,
        156,
        5,
        61,
        0,
        0,
        156,
        46,
        1,
        0,
        0,
        0,
        157,
        158,
        5,
        44,
        0,
        0,
        158,
        48,
        1,
        0,
        0,
        0,
        159,
        160,
        5,
        46,
        0,
        0,
        160,
        50,
        1,
        0,
        0,
        0,
        161,
        162,
        5,
        94,
        0,
        0,
        162,
        52,
        1,
        0,
        0,
        0,
        163,
        164,
        5,
        112,
        0,
        0,
        164,
        165,
        5,
        105,
        0,
        0,
        165,
        54,
        1,
        0,
        0,
        0,
        166,
        167,
        3,
        75,
        37,
        0,
        167,
        56,
        1,
        0,
        0,
        0,
        168,
        169,
        5,
        105,
        0,
        0,
        169,
        58,
        1,
        0,
        0,
        0,
        170,
        171,
        5,
        109,
        0,
        0,
        171,
        172,
        5,
        105,
        0,
        0,
        172,
        173,
        5,
        110,
        0,
        0,
        173,
        60,
        1,
        0,
        0,
        0,
        174,
        175,
        5,
        109,
        0,
        0,
        175,
        176,
        5,
        97,
        0,
        0,
        176,
        177,
        5,
        120,
        0,
        0,
        177,
        62,
        1,
        0,
        0,
        0,
        178,
        182,
        3,
        65,
        32,
        0,
        179,
        181,
        3,
        67,
        33,
        0,
        180,
        179,
        1,
        0,
        0,
        0,
        181,
        184,
        1,
        0,
        0,
        0,
        182,
        180,
        1,
        0,
        0,
        0,
        182,
        183,
        1,
        0,
        0,
        0,
        183,
        64,
        1,
        0,
        0,
        0,
        184,
        182,
        1,
        0,
        0,
        0,
        185,
        187,
        7,
        0,
        0,
        0,
        186,
        185,
        1,
        0,
        0,
        0,
        187,
        66,
        1,
        0,
        0,
        0,
        188,
        191,
        3,
        65,
        32,
        0,
        189,
        191,
        2,
        48,
        57,
        0,
        190,
        188,
        1,
        0,
        0,
        0,
        190,
        189,
        1,
        0,
        0,
        0,
        191,
        68,
        1,
        0,
        0,
        0,
        192,
        202,
        3,
        71,
        35,
        0,
        193,
        196,
        3,
        73,
        36,
        0,
        194,
        196,
        3,
        75,
        37,
        0,
        195,
        193,
        1,
        0,
        0,
        0,
        195,
        194,
        1,
        0,
        0,
        0,
        196,
        198,
        1,
        0,
        0,
        0,
        197,
        199,
        3,
        77,
        38,
        0,
        198,
        197,
        1,
        0,
        0,
        0,
        198,
        199,
        1,
        0,
        0,
        0,
        199,
        200,
        1,
        0,
        0,
        0,
        200,
        201,
        3,
        71,
        35,
        0,
        201,
        203,
        1,
        0,
        0,
        0,
        202,
        195,
        1,
        0,
        0,
        0,
        202,
        203,
        1,
        0,
        0,
        0,
        203,
        70,
        1,
        0,
        0,
        0,
        204,
        206,
        3,
        49,
        24,
        0,
        205,
        207,
        2,
        48,
        57,
        0,
        206,
        205,
        1,
        0,
        0,
        0,
        207,
        208,
        1,
        0,
        0,
        0,
        208,
        206,
        1,
        0,
        0,
        0,
        208,
        209,
        1,
        0,
        0,
        0,
        209,
        233,
        1,
        0,
        0,
        0,
        210,
        212,
        2,
        48,
        57,
        0,
        211,
        210,
        1,
        0,
        0,
        0,
        212,
        213,
        1,
        0,
        0,
        0,
        213,
        211,
        1,
        0,
        0,
        0,
        213,
        214,
        1,
        0,
        0,
        0,
        214,
        215,
        1,
        0,
        0,
        0,
        215,
        233,
        3,
        49,
        24,
        0,
        216,
        218,
        2,
        48,
        57,
        0,
        217,
        216,
        1,
        0,
        0,
        0,
        218,
        219,
        1,
        0,
        0,
        0,
        219,
        217,
        1,
        0,
        0,
        0,
        219,
        220,
        1,
        0,
        0,
        0,
        220,
        221,
        1,
        0,
        0,
        0,
        221,
        223,
        3,
        49,
        24,
        0,
        222,
        224,
        2,
        48,
        57,
        0,
        223,
        222,
        1,
        0,
        0,
        0,
        224,
        225,
        1,
        0,
        0,
        0,
        225,
        223,
        1,
        0,
        0,
        0,
        225,
        226,
        1,
        0,
        0,
        0,
        226,
        233,
        1,
        0,
        0,
        0,
        227,
        229,
        2,
        48,
        57,
        0,
        228,
        227,
        1,
        0,
        0,
        0,
        229,
        230,
        1,
        0,
        0,
        0,
        230,
        228,
        1,
        0,
        0,
        0,
        230,
        231,
        1,
        0,
        0,
        0,
        231,
        233,
        1,
        0,
        0,
        0,
        232,
        204,
        1,
        0,
        0,
        0,
        232,
        211,
        1,
        0,
        0,
        0,
        232,
        217,
        1,
        0,
        0,
        0,
        232,
        228,
        1,
        0,
        0,
        0,
        233,
        72,
        1,
        0,
        0,
        0,
        234,
        235,
        5,
        69,
        0,
        0,
        235,
        74,
        1,
        0,
        0,
        0,
        236,
        237,
        5,
        101,
        0,
        0,
        237,
        76,
        1,
        0,
        0,
        0,
        238,
        239,
        7,
        1,
        0,
        0,
        239,
        78,
        1,
        0,
        0,
        0,
        240,
        242,
        7,
        2,
        0,
        0,
        241,
        240,
        1,
        0,
        0,
        0,
        242,
        243,
        1,
        0,
        0,
        0,
        243,
        241,
        1,
        0,
        0,
        0,
        243,
        244,
        1,
        0,
        0,
        0,
        244,
        245,
        1,
        0,
        0,
        0,
        245,
        246,
        6,
        39,
        0,
        0,
        246,
        80,
        1,
        0,
        0,
        0,
        14,
        0,
        182,
        186,
        190,
        195,
        198,
        202,
        208,
        213,
        219,
        225,
        230,
        232,
        243,
        1,
        6,
        0,
        0,
    ]


class GdmlExpressionLexer(Lexer):
    atn = ATNDeserializer().deserialize(serializedATN())

    decisionsToDFA = [DFA(ds, i) for i, ds in enumerate(atn.decisionToState)]

    COS = 1
    SIN = 2
    TAN = 3
    ACOS = 4
    ASIN = 5
    ATAN = 6
    LN = 7
    LOG = 8
    SQRT = 9
    EXP = 10
    POWER = 11
    ABS = 12
    LPAREN = 13
    RPAREN = 14
    LBRACKET = 15
    RBRACKET = 16
    PLUS = 17
    MINUS = 18
    TIMES = 19
    DIV = 20
    GT = 21
    LT = 22
    EQ = 23
    COMMA = 24
    POINT = 25
    POW = 26
    PI = 27
    EULER = 28
    I = 29
    MIN = 30
    MAX = 31
    VARIABLE = 32
    SCIENTIFIC_NUMBER = 33
    WS = 34

    channelNames = ["DEFAULT_TOKEN_CHANNEL", "HIDDEN"]

    modeNames = ["DEFAULT_MODE"]

    literalNames = [
        "<INVALID>",
        "'cos'",
        "'sin'",
        "'tan'",
        "'acos'",
        "'asin'",
        "'atan'",
        "'log'",
        "'log10'",
        "'sqrt'",
        "'exp'",
        "'pow'",
        "'abs'",
        "'('",
        "')'",
        "'['",
        "']'",
        "'+'",
        "'-'",
        "'*'",
        "'/'",
        "'>'",
        "'<'",
        "'='",
        "','",
        "'.'",
        "'^'",
        "'pi'",
        "'i'",
        "'min'",
        "'max'",
    ]

    symbolicNames = [
        "<INVALID>",
        "COS",
        "SIN",
        "TAN",
        "ACOS",
        "ASIN",
        "ATAN",
        "LN",
        "LOG",
        "SQRT",
        "EXP",
        "POWER",
        "ABS",
        "LPAREN",
        "RPAREN",
        "LBRACKET",
        "RBRACKET",
        "PLUS",
        "MINUS",
        "TIMES",
        "DIV",
        "GT",
        "LT",
        "EQ",
        "COMMA",
        "POINT",
        "POW",
        "PI",
        "EULER",
        "I",
        "MIN",
        "MAX",
        "VARIABLE",
        "SCIENTIFIC_NUMBER",
        "WS",
    ]

    ruleNames = [
        "COS",
        "SIN",
        "TAN",
        "ACOS",
        "ASIN",
        "ATAN",
        "LN",
        "LOG",
        "SQRT",
        "EXP",
        "POWER",
        "ABS",
        "LPAREN",
        "RPAREN",
        "LBRACKET",
        "RBRACKET",
        "PLUS",
        "MINUS",
        "TIMES",
        "DIV",
        "GT",
        "LT",
        "EQ",
        "COMMA",
        "POINT",
        "POW",
        "PI",
        "EULER",
        "I",
        "MIN",
        "MAX",
        "VARIABLE",
        "VALID_ID_START",
        "VALID_ID_CHAR",
        "SCIENTIFIC_NUMBER",
        "NUMBER",
        "E1",
        "E2",
        "SIGN",
        "WS",
    ]

    grammarFileName = "GdmlExpression.g4"

    def __init__(self, input=None, output: TextIO = sys.stdout):
        super().__init__(input, output)
        self.checkVersion("4.13.1")
        self._interp = LexerATNSimulator(
            self, self.atn, self.decisionsToDFA, PredictionContextCache()
        )
        self._actions = None
        self._predicates = None
